/*
    编程实现对给定的年月日信息判断该日期是这一年中的第几天。
*/ 
import java.util.Scanner;

public class YearMonthDay {

    public static void main(String[] args) {

        // 1.提示用户输入一个年月日格式的日期，并用空格隔开。
        System.out.println("请输入一个年月日信息，中间用空格隔开：");
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        int month = sc.nextInt();
        int day = sc.nextInt();

        // 2.判断所输入年份是否为闰年并记录2月份天数。闰年标准：能被4整除且不能被100整除，或者能被400整除。
        int febDay = 0;                               // 声明一个变量记录2月天数并初始化
        if((0 == year % 4) && (0 != year % 100)) {    // 判断是否能被4整除且不能被100整除
            febDay = 29;
        } else if(0 == year % 400) {                  // 判断是否能被400整除
            febDay = 29;
        } else {                                      // 以上都不满足，则该年份不是闰年
            febDay = 28;
        }

        // 3.声明一个一维数组并记录该年份每个月的天数。因为不需要记录12月的天数，所以声明数组长度为11。
        int[] arr = new int[11];
        int monthDay = 0;                                               // 该变量用于记录每月的天数
        // 用for循环给输入月份之前的每个月份对应的数组中的元素赋值
        for(int i = 0; i < month - 1; i++){
            
            // 用switch case记录不同月份的天数
            switch(i + 1) {
                case 4: case 6: case 9: case 11: monthDay = 30; break;  // 4、6、9、11月为30天
                case 2: monthDay = febDay; break;                       // 2月天数等于之前所记录天数
                default: monthDay = 31;                                 // 其余月份为31天
            }
            arr[i] = monthDay;
        }

        System.out.println("-----------------------------------------------");
        // 4.声明一个变量记录所输入月份之前的所有月份天数累加，再加上所输入日期的日数据。最终结果即为需要输出的第几天数据。
        int sum = 0;
        for(int cnt = 0; cnt < month-1; cnt++) {
            sum += arr[cnt];
        }
        sum += day;
        System.out.println(year + "年" + month + "月" + day + "日是这一年中的第" + sum + "天！" );
    }
}